package cn.itcast.nems.common.service;

/**
 * 事务提交后执行的逻辑
 * author: yong.li
 * create: 2024-04-09 09:09:53
 **/
public interface AfterTransactionCommitExecutor {

    /**
     * 在当前线程关联的事务提交后执行runnable；
     * <font color='red'>注意：</font>
     * <pre>
     *  runnable中不要操作数据库，此时的事务已经提交，但相关资源还未释放，执行数据库操作会有不可预知的问题。
     *  如果必须操作数据库，可以将传播特性标记为“新开事务”
     *  Transactional(propagation = Propagation.REQUIRES_NEW)
     * </pre>
     *
     * @param runnable 事务提交后执行的逻辑
     */
    void addRunnable(Runnable runnable);
}
